In a preemptive multi-threaded operating system, a task can interrupt an executing task of lower-priority. When the higher-priority task completes execution, the lower-priority task can resume execution from the point of interruption. Preemption is an attempt to guarantee a worst-case performance time for high-priority processes to enhance the perceived fluidity and responsiveness for the overall system. However, the use of shared resources in a preemptive multitasking environment can create resource conflicts between the various tasks executing in the environment. Some of these conflicts can result in a priority inversion, in which a low priority task blocks a higher priority task's access to a shared resource. Priority inversions can have various repercussions depending on the type and number of resources in question.
In general, solutions to the priority inversion issue focus on preventing system instability issues. For example, the priority ceiling protocol and the priority inheritance protocol teach designs that seek to prevent a priority inversion from resulting in a deadlock and system crash. However, such solutions do not attempt to resolve potential system responsiveness issues created by priority inversions.